WeldEEInjection{ }
inject{
  if (injectionTarget != null) {
  for (  InjectableField field : injectableFields) {
  for (  InjectableMethod method : injectableMethods) {
}
produce{
  try {
 else {
 catch (  IllegalAccessException e) {
catch (  InvocationTargetException e) {
catch (  InstantiationException e) {
}
createWeldEEInjection{
  final AnnotatedType<?> type=beanManager.getServices().get(ClassTransformer.class).loadClass(componentClass);
  List<InjectableField> injectableFields=new ArrayList<InjectableField>();
  List<InjectableMethod> injectableMethods=new ArrayList<InjectableMethod>();
  AnnotatedConstructor<?> injectConstructor=null;
  for (  AnnotatedConstructor<?> constructor : type.getConstructors()) {
    if (constructor.isAnnotationPresent(Inject.class)) {
        throw WeldMessages.MESSAGES.moreThanOneBeanConstructor(componentClass);
  InjectableConstructor constructor=null;
    constructor=new InjectableConstructor(injectConstructor,beanManager,bean);
  final InjectionTarget injectionTarget;
    injectionTarget=((AbstractClassBean)bean).getInjectionTarget();
    for (    AnnotatedField<?> field : type.getFields()) {
      if (field.isAnnotationPresent(Inject.class)) {
        if (InjectionPoint.class.isAssignableFrom(field.getJavaMember().getType())) {
          throw WeldMessages.MESSAGES.attemptingToInjectInjectionPointIntoField(componentClass,field.getJavaMember());
        final Set<Annotation> qualifiers=new HashSet<Annotation>();
        for (        Annotation annotation : field.getAnnotations()) {
          if (beanManager.isQualifier(annotation.annotationType())) {
        FieldInjectionPoint ip=new FieldInjectionPoint(field,qualifiers,bean);
        Set<Bean<?>> beans=beanManager.getBeans(ip);
        Bean<?> ipBean=beanManager.resolve(beans);
          throw WeldMessages.MESSAGES.couldNotResolveInjectionPoint(field.getJavaMember().toGenericString(),qualifiers);
        injectableFields.add(new InjectableField(field.getJavaMember(),ipBean,ip));
    for (    AnnotatedMethod<?> method : type.getMethods()) {
      if (method.isAnnotationPresent(Inject.class)) {
        final List<Bean<?>> parameterBeans=new ArrayList<Bean<?>>();
        final List<InjectionPoint> ips=new ArrayList<InjectionPoint>();
        for (        AnnotatedParameter<?> param : method.getParameters()) {
          final Set<Annotation> qualifiers=new HashSet<Annotation>();
          for (          Annotation annotation : param.getAnnotations()) {
            if (beanManager.isQualifier(annotation.annotationType())) {
          final Class<?> parameterType=method.getJavaMember().getParameterTypes()[param.getPosition()];
          if (InjectionPoint.class.isAssignableFrom(parameterType)) {
            throw WeldMessages.MESSAGES.attemptingToInjectInjectionPointIntoNonBean(componentClass,method.getJavaMember());
          ParameterInjectionPoint ip=new ParameterInjectionPoint(param,qualifiers,bean);
          Set<Bean<?>> beans=beanManager.getBeans(ip);
          Bean<?> ipBean=beanManager.resolve(beans);
            throw WeldMessages.MESSAGES.couldNotResolveInjectionPoint(param.toString(),qualifiers);
          parameterBeans.add(ipBean);
        injectableMethods.add(new InjectableMethod(method.getJavaMember(),parameterBeans,ips));
  return new WeldEEInjection(componentClass,beanManager,injectableFields,injectableMethods,constructor,injectionTarget);
}
